% fname: routing_xy__topology_8x8__.m
% ./noxim -routing xy -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -buffer 2 -traffic transpose1 

function [max_pir, max_throughput, min_delay] = routing_xy__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.008        42.1791      0.0643184            916           4116          32931
            0.008        31.9403      0.0646152            551           4136          33083
            0.008        35.1127      0.0638438            641           4083          32688
            0.008        37.9132      0.0651836           1165           4171          33374
            0.008        32.7226      0.0634316            597           4059          32477
            0.008        38.8281       0.064877           1521           4154          33217
            0.008        35.1265      0.0631367            957           4041          32326
            0.008        28.0688      0.0635371            413           4067          32531
            0.008        32.0557       0.063082            457           4037          32298
            0.008        36.4747      0.0644844            961           4127          33016
            0.008        30.3967      0.0645762            691           4132          33063
            0.008        42.6632       0.065502           1469           4193          33537
            0.008        40.6175      0.0645488           1014           4131          33049
            0.008        31.5323      0.0633848            414           4058          32453
            0.008        32.5296      0.0630449            384           4035          32279
            0.008        32.0125       0.064791            600           4147          33173
            0.008        32.3757      0.0649199            495           4155          33239
            0.008        44.9314      0.0646895           1133           4140          33121
            0.008        38.8741      0.0655527            918           4195          33563
            0.008        35.5427       0.064541            434           4131          33045
           0.0088        44.4458      0.0684687           1321           4381          35056
           0.0088        102.888      0.0703496           4051           4502          36019
           0.0088        47.9507      0.0690898            893           4421          35374
           0.0088        49.0439      0.0704668           1702           4511          36079
           0.0088        79.4577      0.0706191           2827           4520          36157
           0.0088        62.9717      0.0706895           1488           4523          36193
           0.0088         64.375      0.0707168           2559           4523          36207
           0.0088        65.1768      0.0697168           2054           4462          35695
           0.0088        70.3974      0.0696777           1694           4461          35675
           0.0088        72.2051      0.0694551           3642           4442          35561
           0.0088        40.5814      0.0694551           1086           4443          35561
           0.0088        67.2912      0.0710547           1809           4550          36380
           0.0088        51.3969       0.071584           1426           4581          36651
           0.0088        47.8553      0.0689844           2162           4415          35320
           0.0088        43.1449      0.0687148           1038           4397          35182
           0.0088        73.8748      0.0688066           3315           4402          35229
           0.0088        114.167      0.0707891           3112           4527          36244
           0.0088        61.2683      0.0696621           1574           4457          35667
           0.0088         74.675      0.0710898           2402           4547          36398
           0.0088        83.4354      0.0717813           3682           4596          36752
           0.0096        112.956      0.0762988           5264           4886          39065
           0.0096        89.2321      0.0745684           3291           4770          38179
           0.0096        115.043      0.0765645           4955           4898          39201
           0.0096        91.8051      0.0756641           3830           4844          38740
           0.0096        129.263      0.0747344           5692           4782          38264
           0.0096          120.4      0.0776562           5343           4970          39760
           0.0096        109.261      0.0768516           3496           4918          39348
           0.0096        100.269      0.0747441           6344           4782          38269
           0.0096        114.613      0.0753926           4471           4827          38601
           0.0096          87.73      0.0751172           4454           4807          38460
           0.0096        127.213       0.075291           4905           4817          38549
           0.0096        99.5214      0.0756348           5409           4839          38725
           0.0096        78.2592      0.0763633           2909           4888          39098
           0.0096        133.616      0.0775625           5367           4966          39712
           0.0096        191.827       0.076332           6775           4887          39082
           0.0096        127.373      0.0756875           5476           4846          38752
           0.0096         87.714      0.0735547           3211           4707          37660
           0.0096        102.862      0.0743145           5989           4756          38049
           0.0096        106.262      0.0755312           4710           4835          38672
           0.0096        92.4476      0.0754395           3616           4828          38625
           0.0104        146.911       0.080373           5917           5145          41151
           0.0104        186.167      0.0820527           5798           5249          42011
           0.0104        141.718       0.081293           6713           5202          41622
           0.0104        177.445      0.0799863           6556           5117          40953
           0.0104        181.083      0.0811113           7808           5190          41529
           0.0104        159.439      0.0813281           6402           5204          41640
           0.0104        178.892      0.0821348           7267           5255          42053
           0.0104        154.967      0.0801543           8122           5130          41039
           0.0104        132.022      0.0822617           7324           5265          42118
           0.0104        139.667      0.0796426           6999           5097          40777
           0.0104        145.327      0.0800879           5209           5127          41005
           0.0104        159.374      0.0798477           7035           5111          40882
           0.0104        140.167      0.0807539           5912           5167          41346
           0.0104        186.663      0.0798555           6978           5111          40886
           0.0104        194.816      0.0813145           7295           5204          41633
           0.0104        189.437      0.0810781           6958           5191          41512
           0.0104        145.361      0.0802266           7080           5137          41076
           0.0104        128.552       0.082291           5130           5267          42133
           0.0104        167.065      0.0785645           7700           5030          40225
           0.0104        171.628      0.0800215           8359           5122          40971
           0.0112        197.235      0.0827285           7491           5296          42357
           0.0112        188.582      0.0845078           6927           5407          43268
           0.0112        230.007       0.084875           8250           5433          43456
           0.0112        182.129      0.0845742           7846           5412          43302
           0.0112        254.051      0.0843184           7636           5399          43171
           0.0112        181.675      0.0835645           8024           5348          42785
           0.0112        162.629      0.0850957           8407           5446          43569
           0.0112        207.547      0.0864141           8859           5531          44244
           0.0112         194.46      0.0842129           8852           5390          43117
           0.0112        176.508      0.0842617           6550           5392          43142
           0.0112        193.872      0.0828125           8170           5300          42400
           0.0112        174.053      0.0833281           7215           5332          42664
           0.0112        186.109      0.0851504           8090           5451          43597
           0.0112        170.303      0.0843281           8389           5398          43176
           0.0112        202.209      0.0854395           7616           5468          43745
           0.0112        203.095      0.0842266           8027           5390          43124
           0.0112        149.384        0.08475           6603           5424          43392
           0.0112        186.348      0.0846738           8519           5418          43353
           0.0112        205.908      0.0850527           5756           5446          43547
           0.0112        247.934      0.0844824           8361           5405          43255
            0.012        218.206      0.0887578           7755           5680          45444
            0.012        219.881      0.0878848           9240           5625          44997
            0.012         240.54      0.0878984           7220           5624          45004
            0.012         264.54       0.087959           9028           5627          45035
            0.012        208.717      0.0881035           7051           5637          45109
            0.012        229.941      0.0876172           8624           5606          44860
            0.012        248.579      0.0869414           7181           5566          44514
            0.012        225.539       0.088582           5936           5669          45354
            0.012        251.733      0.0887305           7511           5679          45430
            0.012        258.856      0.0889687           8309           5693          45552
            0.012        240.258      0.0878965           9542           5627          45003
            0.012        211.393      0.0876152           7333           5607          44859
            0.012        220.216      0.0880332           6840           5634          45073
            0.012        248.806      0.0880254           7125           5635          45069
            0.012        244.441      0.0869824           8120           5565          44535
            0.012        284.838      0.0893552           9295           5628          45035
            0.012        228.478      0.0895059           7687           5728          45827
            0.012        243.067      0.0865781           8962           5543          44328
            0.012        235.365      0.0885508           7954           5670          45338
            0.012        237.676      0.0875195           7724           5602          44810
           0.0128        309.989      0.0912421           9166           5748          45986
           0.0128        277.413      0.0924067           9031           5818          46573
           0.0128        330.378       0.093371           7748           5882          47059
           0.0128        285.566      0.0929147           8157           5853          46829
           0.0128        344.031      0.0925655           9229           5831          46653
           0.0128        283.232      0.0899902           8732           5758          46075
           0.0128        258.132      0.0923988           8443           5823          46569
           0.0128        280.583      0.0945774           7750           5956          47667
           0.0128        265.638      0.0946129           7970           5864          46928
           0.0128        307.193      0.0887793           7344           5685          45455
           0.0128        303.784      0.0919742           6961           5792          46355
           0.0128        320.572      0.0923125           8958           5908          47264
           0.0128        283.161      0.0920703           7559           5891          47140
           0.0128         254.61      0.0924087           7731           5818          46574
           0.0128        277.566      0.0938512           7812           5912          47301
           0.0128        256.164      0.0931523           5956           5961          47694
           0.0128        271.166      0.0913848           8589           5846          46789
           0.0128        306.902      0.0924863           7666           5918          47353
           0.0128        291.937       0.093379           9349           5885          47063
           0.0128        336.307      0.0926389           8509           5835          46690
           0.0136        279.203      0.0980141           6671           6077          48615
           0.0136        374.765      0.0953968           9180           6011          48080
           0.0136        312.751      0.0945119           7799           5957          47634
           0.0136        361.367      0.0975625           7969           6050          48391
           0.0136        371.742      0.0966673           8650           5991          47947
           0.0136        391.753      0.0992664           8344           6058          48442
           0.0136        408.983      0.0948613           7761           6070          48569
           0.0136        343.597      0.0983488           8611           6097          48781
           0.0136        358.474      0.0968044           7065           6002          48015
           0.0136        347.706      0.0955913           8125           6024          48178
           0.0136        325.937      0.0970968           9023           6022          48160
           0.0136        340.542      0.0959425           7578           6045          48355
           0.0136        402.661      0.0992848           8942           6057          48451
           0.0136        282.878      0.0960867           8823           5957          47659
           0.0136        338.152      0.0965524           8348           5987          47890
           0.0136        326.717      0.0972992           6257           5936          47482
           0.0136        352.084       0.100379           9290           6022          48182
           0.0136        365.856      0.0956825           9321           6030          48224
           0.0136          317.7      0.0953075           8754           6003          48035
           0.0136        348.036      0.0963367           8832           5974          47783
           0.0144        429.144      0.0990968           8309           6142          49152
           0.0144        417.335       0.101153           7114           6273          50172
           0.0144        410.479        0.10307           8806           6289          50298
           0.0144        422.747       0.101002           8746           6162          49289
           0.0144        446.083       0.100256           8373           6217          49727
           0.0144        377.893       0.101405           8335           6289          50297
           0.0144        367.579       0.100648           8956           6140          49116
           0.0144        381.774       0.101447           7682           6188          49506
           0.0144        362.462       0.101331           8196           6283          50260
           0.0144        439.592      0.0987762           8699           6124          48993
           0.0144         424.24       0.102734           8240           6266          50134
           0.0144        431.406       0.100159           8434           6208          49679
           0.0144        391.655       0.101044           9109           6263          50118
           0.0144        442.709      0.0998468           9309           6190          49524
           0.0144        457.183       0.100841           8141           6253          50017
           0.0144        369.361      0.0986548           8365           6215          49722
           0.0144        411.207       0.102467           7945           6247          50004
           0.0144        397.994         0.1024           8092           6244          49971
           0.0144        378.445       0.101596           8806           6198          49579
           0.0144         456.99         0.1025           8980           6252          50020
           0.0152        500.778       0.104201           9015           6356          50850
           0.0152        438.402       0.105107           7982           6411          51292
           0.0152        452.905        0.10181           7364           6314          50498
           0.0152        523.512        0.10465           8858           6383          51069
           0.0152        407.816       0.103593           7975           6422          51382
           0.0152        430.621       0.101619           7001           6401          51216
           0.0152         513.76       0.107578           8559           6348          50777
           0.0152        492.954       0.108488           7859           6508          52074
           0.0152        455.232       0.103546           9121           6420          51359
           0.0152        470.968       0.109468           9159           6457          51669
           0.0152        522.129       0.104596           9319           6381          51043
           0.0152        460.995       0.105369           8309           6428          51420
           0.0152        495.636        0.10349           9326           6418          51331
           0.0152        434.496       0.104222           7264           6461          51694
           0.0152         452.56       0.104162           7160           6351          50831
           0.0152        412.838       0.104791           7502           6395          51138
           0.0152        452.347       0.103058           7591           6392          51117
           0.0152        520.411       0.104363           9293           6364          50929
           0.0152        471.714        0.10408           8837           6348          50791
           0.0152        492.303       0.102861           8150           6377          51019
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
